//处理menuList的数据类型
interface userState {
    userList: Array<Object>,
    total?: number,
    pageNum?: number,
    pageSize?: number
};
//引入userList列表接口->userlist  获取总数 ->usercount
import { userlist, usercount } from "../../request/api";
//引入消息提示
import { ElMessage } from "element-plus";

//数据仓库
const state = {
    userList: [],//user页的初始数组
    pageNum: 1,//页码数
    pageSize: 1,//显示的条数
    total: 1//总数
};
//getters 处理数据
const getters = {
    //返回处理好的userList数据
    getUserlist(state: userState) {
        return state.userList;
    },
    //返回总数
    getTotal(state: userState) {
        return state.total
    },
    //返回显示条数
    getPageSize(state: userState) {
        return state.pageSize
    }
};
//唯一修改state仓库的方法 mutations
const mutations = {
    //修改userList方法
    REQ_USER(state: userState, payload: any) {
        state.userList = payload;
    },
    //修改总数的方法
    REQ_TOTAL(state: userState, payload: any) {
        state.total = payload;
    },
    //修改页码的方法
    REQ_PAGENUM(state:userState,payload:number){
        state.pageNum = payload;
    }
};
//处理异步操作的 actions
const actions = {
    //获取user列表方法
    async changeUserAction(context: any) {
        let res: any = await userlist({ page: context.state.pageNum, size: context.state.pageSize });
        //判断是否获取成功
        if (res.code == 200) {
            //传输数据
            context.commit('REQ_USER', res.list);
        } else {
            ElMessage.error('User获取数据失败');
        }
    },

    //获取总条数
    async changeTotalAction(context: any) {
        let res: any = await usercount();
        //判断是否获取成功
        if (res.code == 200) {
            //传输数据
            context.commit('REQ_TOTAL', res.list[0].total);
        } else {
            ElMessage.error('总条数获取失败');
        }
    },

    //切换页码 获取数据
    changePageAction(context:any,payload:number){
        //修改当前页码
        context.commit('REQ_PAGENUM',payload);
        //重新获取数据
        context.dispatch('changeUserAction');
    }
};



export default {
    state, getters, mutations, actions,
    namespaced: true
}